package com.rran.study.designpattern.structural.flyweight;

/**
 * @author yy
 * @Type Test.java
 * @Desc 围棋理论上有361个空位可以放棋子，每盘棋都可以有两三百分棋子对象产生，因为内存空间有限，
 * 一台服务器很难支撑更多的玩家玩围棋游戏，如果用享元模式来处理棋子，
 * 那么棋子对象可以减少到只有两个实例（黑白棋子，属于我们的内部状态），
 * 而不同对局里面下棋的位置不同属于我们的外部状态，是不能共享的，
 * 这样子做就很好的解决了对象的开销问题
 * @date 2020/7/24 16:54
 */
public class Test {
    private static final String colors[] = {"black", "white"};

    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            Board bb = (Board) ColorFactory.getBrush(getRandomColor());
            bb.setX(getX());
            bb.setY(getY());
            bb.draw();
        }
    }

    private static int getY() {
        return (int) (Math.random() * 100);
    }

    private static int getX() {
        return (int) (Math.random() * 100);
    }

    private static String getRandomColor() {
        return colors[(int) (Math.random() * colors.length)];
    }

}